import re

# 省级地址码
province = {
    11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",
    21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",
    33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",
    41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",
    46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",
    54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",
    65:"新疆",71:"台湾",81:"香港",82:"澳门"
}

# 身份证号判断有效
def verified_IdNumber(id_card):
    # 长度是否符合标准
    if len(id_card) != 18:
        return False

    # 元素是否符合标准
    reg = r""
    result = re.match(reg,id_card)

    # 最后一位是否符合标准


def verified_lastNumber(id_card):
    # 验证权级
    check_list = [1,0,10,9,8,7,6,5,4,3,2]
    authority = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]

    # 位数处理
    last = id_card[-1]
    if last.upper() == 'X':
        last = 10
    else:
        last = int(id_card[-1])
    cards = list(map(int,id_card[:-1]))

    # 核验运算
    result = 0
    for i in range(17):
        result += cards[i] * authority[i]
    index = result % 11
    if check_list[index] == last:
        return True
    else:
        return False
